﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LibraryManagementSystem
{
    class BorrowingAndReturningBookSystem : ViewClassCheckInputValue,interfaceNodeClass
    {

        public void Running(Library library) 
        {
            while (true)
            {
                Console.Clear();
                Console.WriteLine("欢迎进入图书借还系统");
                Console.WriteLine("请输入您需要的业务号码");
                Console.WriteLine("1.借书");
                Console.WriteLine("2.还书");
                Console.WriteLine("3.退出系统");


                string num = InputString();
                switch (num)
                {
                    case "1":
                        Borrowing(library);
                        break;
                    case "2":
                        Returning(library);
                        break;
                    case "3":
                        PromptWait("已退出图书借还系统");
                        return;
                    default:
                        PromptWait("指令错误");
                        break;

                }

            }
        }

        private void Borrowing(Library lby)//借书 
        {
            if (lby.BookList.Count<=0) 
            {
                PromptWait("图书馆的库存已为0无法借阅");
                return;
            }
             
            while (true)
            {
                Console.Clear();
                Console.WriteLine("-------------借书--------------");
                String BookName = InputString("请输入书名");
                String BookAuthor = InputString("请输入作者名");

                int bookIndex = lby.FindBook(BookName, BookAuthor);
                if (bookIndex == -1)
                {
                    PromptWait("没有这本书");
                    break;
                }
                BookClass bookClass = lby.GetBookDataByIndex(bookIndex);
                Console.WriteLine($"当前书本存量：{bookClass.BookAmount}");
                if (bookClass.BookAmount < 1)
                {
                    Console.WriteLine("当前书本存量不足，无法借阅");
                }
                else 
                {
                    string B = InputString("需要借阅吗？(Y/N)").ToUpper();
                    if ( B == "Y" ) 
                    {
                        lby.SetBookAuthorByIndex(bookIndex, -1);
                        PromptWait("已借出");
                    }
                }
                

                string A = InputString("还要继续借书吗？（Y/N）").ToUpper();
                if (A == "N")
                {
                    PromptWait("已退出");
                    return;
                }



            }
        }

        private void Returning(Library lby) //还书
        {

            while (true)
            {
                Console.Clear();
                Console.WriteLine("-------------还书--------------");
                String BookName = InputString("请输入书名");
                String BookAuthor = InputString("请输入作者名");

                int bookIndex = lby.FindBook(BookName, BookAuthor);
                if (bookIndex == -1)
                {
                    PromptWait("没有这本书");
                    break;
                }
                else
                {
                    lby.SetBookAuthorByIndex(bookIndex, 1);
                    PromptWait("已归还");
                }


                string A = InputString("还要继续还书吗？（Y/N）").ToUpper();
                if (A == "N")
                {
                    PromptWait("已退出");
                    return;
                }



            }

        }




    // 借阅系统：
    //    ▪ 支持用户借阅图书。
    //    ▪ 支持用户归还图书。
    //    ▪ 检查图书库存，防止库存不足时进行借阅操作。
    //◦ 展示所有库存信息

    }
}
